Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.02.2009, 17:30
Аспирант
Отправить личное сообщение для ilshat Посмотреть профиль Найти все сообщения от ilshat
 
Регистрация: 28.07.2008
Сообщений: 67

Скорость передачи данных через Ajax
Здравствуйте коллеги.

Может кто встречался с такой проблемой.

Меньшие по объему данные передаются с большой скоростью.
Обмен идет через Ajax

Сервер (win2003se sp2 sql2000 Apache 2, php5) находится в локалке примерно за 150 км.
тестировал через Debug Bar

один запрос выдает

Connecting delay: Already connected (Keepalive: using existing socket)
Headers exchange delay: 116 ms
Data transmission delay: 0 ms
Headers size (bytes): 772
Data size (bytes): 4023
Total size (bytes): 4795
Transferred data size (bytes): 4795
Cached data: No

второй запрос

Connecting delay: Already connected (Keepalive: using existing socket)
Headers exchange delay: 4934 ms
Data transmission delay: 0 ms
Headers size (bytes): 802
Data size (bytes): 94
Total size (bytes): 896
Transferred data size (bytes): 896
Cached data: No


почему у второго запроса задержка Headers exchange delay: 4934 ms при маленьком объеме передаваемой информации Total size (bytes): 896 а первый справляется почти мгновенно Headers exchange delay: 116 ms при объеме Total size (bytes): 4795

Никто не сталкивался с подобным?
Ответить с цитированием
  #2 (permalink)  
Старый 03.02.2009, 20:11
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

насколько я понимаю время, которое вы сравниваете, это время за сколько пришли превые заголовки.
и этот показатель абсолютно никак не зависит от объема передаваемых данных.
он зависит от качества линии, и от скрипта который генерит данные.
если у вас вывод заголовков идет в скрипте сразу после вызова, то можно считать это время аналогичным пингу.
Если у вас такой разброс, значит не все так уж хорошо в локалке.
Если у вас постоянно именно такие цифры, и разброс именну в ту же сторону, то скорее всего между вами стоит управлялка, которая выделяет разные приоритеты в зависимости от размера данных.

попробуйте в меньшем блоке дополнить его до большего необходимым количесвтом пробелов.
если не изменится, то проблема в логике скрипта на сервере.
Ответить с цитированием
  #3 (permalink)  
Старый 03.02.2009, 20:41
Аспирант
Отправить личное сообщение для ilshat Посмотреть профиль Найти все сообщения от ilshat
 
Регистрация: 28.07.2008
Сообщений: 67

хм. я думал что это время передачи заголовков от момента ответа сервера. По крайней мере вольный перевод мне так подсказал.

Но те же самые запросы когда они исходят непосредственно с сервера (127.0.0.1) - работают очень шустро (порядка 10 мс). причем оба.
То есть слабое место в локалке.
Но тогда время передачи пакета данных должно напрямую зависеть от объема! а тут обратная зависимость.

Забыл добавить - на серваке стоит антивирус фаервол Nod Smart Security business edition. Пробовали отключать - ничего не изменялось! то есть симптомы были те же самые.

Насчет управлялки - некоторые запросы - с большим объемом данных - так же работают быстрее этого запроса.

Что еще может быть слабым звеном?

Последний раз редактировалось ilshat, 03.02.2009 в 20:55.
Ответить с цитированием
  #4 (permalink)  
Старый 03.02.2009, 23:27
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

поэкспериментируй с разными объемами данных
еще можешь попробовать последить за скоростью с помощью ff+firebug

думаю, Headers exchange delay - это промежуток времени между посылкой запроса и получением первых данных. Т.е. в это время включается время выполнения скрипта

Последний раз редактировалось x-yuri, 03.02.2009 в 23:36.
Ответить с цитированием
  #5 (permalink)  
Старый 03.02.2009, 23:43
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

ilshat,
Как уже сказал x-yuri, Headers exchange delay это разница во времени когда сервер получил заголовок запроса и выдал заголовок ответа.

Причина такой разницы у маленького и большого запроса может быть разная. Возможно, это тормоза apache/php.

А возможно вы не посылаете в своем заголовке Content-Length с длинной ваших POST-параметров, и сервер ждет, когда заполнится буфер в 1 Кб (например), из-за чего маленький запрос "висит" дольше.
Ответить с цитированием
  #6 (permalink)  
Старый 04.02.2009, 09:32
Аспирант
Отправить личное сообщение для ilshat Посмотреть профиль Найти все сообщения от ilshat
 
Регистрация: 28.07.2008
Сообщений: 67

Проблема решилась.
На самом деле проблема все такие была в скриптах.

В логи ложились ip адрес и имя компьютера с которого было обращение.
Для определения имени - WEB сервер обращался к DNS серверу для разрешения имени хоста и в итоге на это и тратилось кучу времени (~ 4 c)
А когда запрос шел с локалхоста - сервак сам разрешал свое имя

Всем спасибо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
<script> через Ajax Snipe AJAX и COMET 48 18.02.2009 04:00
Проблема с обработкой селектов html кода, пришедшего через ajax запрос Rage jQuery 6 26.01.2009 14:15
Сохранение данных для передачи с одной страницы в другую Andrey Freeman Общие вопросы Javascript 6 15.09.2008 22:32
Чтение данных переданных через XMLHttpRequest.send IGOR AJAX и COMET 10 08.08.2008 15:38
Просмотр передаваемых данных через AJAX Гость AJAX и COMET 3 04.08.2008 14:34